package com.system.mapper;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.common.base.persistence.MyBatisRepository;
import com.system.vo.SysRoleVO;
import com.system.vo.SysStaffVO;


@MyBatisRepository
public interface SysStaffMapper{
    public  SysStaffVO findSysStaffbyname(@Param("username") String username);//根据用户名查找员工对象；
    public List <String> findRolesIdByStaff_id(@Param("staff_id") String staff_id);//通过用户名查找角色ID
    public String findRolesIdByStaffId(@Param("staffId") String staffId);//通过用户名查找角色ID
	
	/**
	 * @方法说明 
	 *  通过员工编号查询员工基本信息
	 * @param staff_id :员工编号
	 * @创建日期 2017年4月19日
	 */
	public SysStaffVO  queryStaffDetail(@Param("staff_id") String staff_id);

	/**
	 * @方法说明
	 *  通过员工编号查询员工基本信息
	 * @param staff_id :员工编号
	 * @创建日期 2017年8月25日
	 */
	public int  countStaffById(@Param("staff_id") String staff_id);
	
	/**
	 * 根据员工姓名，模糊搜索员工
	 * @param staff_name ：员工姓名
	 * @return List<SysStaffVO> ：满足条件的员工集合
	 */
	List<SysStaffVO> queryStaffByName(@Param("staff_name") String staff_name);
	public List<SysStaffVO> findStaffSBymap(Map map);//多条件分页查询员工信息
	public void deleteStaffAndRoles(@Param("staff_id") String staff_id)throws Exception;
	public void addStaffAndRoles(@Param("staffId") String staffID, @Param("roleId") String roleID)throws Exception;
	public void editStaffInfo(Map<String, Object> updatemap)throws Exception;
	public List<SysRoleVO> findRolesByUserId(@Param("staffId") String staff_id);//根据用户的ID查找用户已拥有角色
	public List<SysStaffVO> queryNameId();
	
	/**
	 * 根据用户ID查询用户
	 * @param staffId
	 * @return
	 */
	public SysStaffVO findById(@Param("staffId") String staffId);

	/**
	 * 添加员工
	 * @param vo
	 */
	void  addStaff(SysStaffVO vo) throws SQLException;

	/**
	 * 删除员工
	 * @param staffId 员工编号
	 */
	void deleteStaff(@Param("staff_id") String staffId) throws SQLException;

	/**
	 * 修改员工
	 * @param vo
	 * @throws SQLException
	 */
	void updateStaff(SysStaffVO vo) throws SQLException;
	
	SysStaffVO queryStaffOne(SysStaffVO sysStaffVO) throws Exception;

    void modifiyPsw(@Param("newPsw") String newPsw, @Param("staffId") String staffId) throws Exception;
    
    public SysStaffVO findAccountByName(@Param("staffName") String staffName);
    
}
